home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d18
/
turbotut.arc
/
MANUAL.EXE
/
lha
/
CHAP4.TXT
< prev
next >
Wrap
Text File
|
1988-11-27
|
12KB
|
322 lines
CHAPTER 4 - The Pascal loops and control structures
Every program we have examined to this point has been a
simple one pass through with no statements being repeated.
As in all other languages, Pascal has extensive capabilities
to do looping and conditional branching. We will look at
these now.
THE FOR LOOP
We will start with what may be the easiest structure to
understand, the FOR loop. This is used to repeat a single
Pascal statement any number of times we desire. Load
LOOPDEMO and we will discuss the loops presented there.
The first example is the simplest and is simply a repeat
of a WRITELN 7 times. We have three new reserved words,
FOR, TO, and DO which are used as shown. Any simple
variable of type INTEGER, BYTE, or CHAR can be used for the
loop index and it must be defined in a VAR statement.
Following the DO reserved word is any single Pascal
statement that will be repeated the specified number of
times. Note that the loop is an incrementing loop but
substitution of DOWNTO for TO will make it a decrementing
loop as is illustrated in the last example in this program.
A COMPOUND PASCAL STATEMENT
The second example contains our first compound Pascal
statement. It was mentioned in Chapter 1 that the BEGIN END
pair of reserved words could be used to mark the limits of a
compound statement. In this case, the single statement
starting with the BEGIN and extending through and including
the END statement is the single Pascal statement that will
be executed 10 times. A second variable "total" has been
introduced to simply add another operation to the loop. Any
valid Pascal operation can be performed within the BEGIN END
pair, including another loop, thus resulting in nested loops
to whatever depth you desire.
The third example shows how the CHAR variable could be
used in a FOR loop. Pascal requires that the loop variable,
the starting point, and the ending point all be of the same
type or it will generate an error message.
The fourth example is a decrementing loop as mentioned
earlier.
THE IF STATEMENT
Now we will look at the conditional branching
capability, or at least one of them, the IF statement. Load
IFDEMO for an onscreen look at the IF THEN pair of reserved
Page 15
CHAPTER 4 - The Pascal loops and control structures
words. Any condition that can be reduced to a boolean
answer is put between the IF THEN pair of words. If the
resulting expression resolves to TRUE, then the following
single Pascal statement is executed, and if it resolves to
FALSE, then the following single statement is skipped over.
Of course, you can probably guess that the single statement
can be replaced with a compound statement bracketed with a
BEGIN END pair and you are correct. Study example 1 and you
will see that the line will always be printed in this
particular fragment. It is very difficult to come up with a
good example without combining some of the control
structures which we will do in the next file.
The second example is similar to the first but with the
single statement replaced with a compound statement and
should be easy to understand.
The third example contains a new reserved word, ELSE.
When the IF condition is FALSE, the single statement is
skipped and if a semicolon is encountered, the IF clause is
totally complete. If instead of a semicolon, the reserved
word ELSE is encountered, then the single Pascal statement
following ELSE is executed. One and only one of the single
statements will be executed every time the IF statement is
encountered in the program. Examination of the third
example should clear this up in your mind.
THE IF-THEN-ELSE "block"
Put on your thinking cap because the next principle is
difficult to grasp at first but will suddenly clear up and
be one of the most useful facts of Pascal programming.
Since the entire IF THEN ELSE "block" of code is itself a
single Pascal statement, by definition, it can be used
anywhere that an executable statement is legal without BEGIN
END separators. This is shown in the fourth example of the
IFDEMO Pascal example program. The IF THEN ELSE construct
is one of the most used, most useful, and therefore most
important aspects of PASCAL. For this reason you should
become very familiar with it.
Try changing some of the conditions in the example
program to see if you can get it to print when you expect it
to just for your own practice and enjoyment. When you are
ready, we will go on to a program with loops and conditional
statements.
LOOPS AND IFS TOGETHER
Load LOOPIF and observe it for a few minutes. It
contains most of what you have studied so far and should be
Page 16
CHAPTER 4 - The Pascal loops and control structures
understandable to you at this point. It contains a loop
with two IF statements within it, and another loop within
one of the IF statements.
An easily made error should be pointed out at this time.
If an extraneous semicolon were put at the end of the second
IF statement, the code following the statement would always
be executed because the "null" statement (the nothing
statement between the THEN and the semicolon) would be the
conditional statement. The compiler would not generate an
error and you would get no warning. Add a semicolon after
the IF statement to see the error.
FINALLY, A MEANINGFUL PROGRAM
Load TEMPCONV and study its structure. Run it and you
will have a list of Centigrade to Fahrenheit temperature
conversions with a few added notes. Load, examine, and run
DUMBCONV for a good example of poor variable naming. The
structure of the program is identical to the last program
and when you run it, you will see that it is identical in
output, but it is difficult to understand what it does by
studying the listing. These programs should both be easily
understood by you by now, so we will go on to our next
Pascal control structure.
THE REPEAT UNTIL LOOP
The next two Pascal structures are very similar because
they are both indefinite loops (indefinite because they are
not executed a fixed number of times). One of the loops is
evaluated at the top and the other at the bottom. It will
probably be easier to start with the REPEAT UNTIL structure
which is the loop that is evaluated at the bottom.
Retrieve the file REPEATLP to see a repeat loop. Two
more reserved words are defined here, namely REPEAT and
UNTIL. This rather simple construct simply repeats all
statements between the two reserved words until the boolean
expression following the UNTIL is found to be TRUE. This is
the only expression I know of that operates on a range of
statements rather than a single statement and BEGIN END
delimiters are not required. A word of caution is in order
here. Since the loop is executed until some condition
becomes TRUE, it is possible that the condition will never
be TRUE and the loop will never terminate.
THE WHILE LOOP
The file WHILELP contains an example of another new
construct, the WHILE loop. This uses the WHILE DO reserved
Page 17
CHAPTER 4 - The Pascal loops and control structures
words and will execute one Pascal statement (or one compound
statement bounded with BEGIN END) continuously until the
boolean expression between the two words becomes FALSE.
This loop is also indeterminate and could, like the REPEAT
UNTIL, never terminate. You should therefore exercise care
in using it.
THE CASE STATEMENT
The final control structure introduces yet another
reserved word, CASE. The CASE construct actually should be
included with the IF statement since it is a conditional
execution statement, but I chose to save it for last because
it is rather unusual and will probably be used less than the
others we have discussed in this chapter.
The CASE statement is used to select one of many
possible simple Pascal statements to execute based on the
value of a simple variable. Load the file CASEDEMO and
observe the program for an example of a case statement. The
variable between the CASE and OF reserved words is the
variable used to make the selection. Following that, the
various selections are given in the form of a possible value
or range, a colon, a single Pascal statement, and a
semicolon. Following the list of selections, an ELSE can be
added to cover the possibility that none of the selections
were executed. Finally, an END; statement is used to
terminate the case construct. Note that this is one of the
few places in Pascal that an END is used without a
corresponding BEGIN.
The example file uses "count" for a variable and prints
the numbers one through five in text form, and declares that
numbers outside this range are not in the allowable list.
The program should be self explanatory beyond that point.
This is admittedly a very brief explanation of the CASE
statement but you will have no trouble using it when you
have need for it. You can study it in detail at that time.
This brings us to the end of chapter 4 and you now have
enough information to write essentially any program desired
in Pascal. There would be a few difficulties if you
attempted to try to program without the further topics
coming up in the next chapters. The additional topics will
greatly add to the flexibility of Pascal and will greatly
ease programming in it.
Page 18
CHAPTER 4 - The Pascal loops and control structures
PROGRAMMING EXERCISES
1. Write a program that lists the numbers from 1 to 12 and
writes a special message beside the number representing
your month of birth.
2. Write a program that lists all of the numbers from 1 to
12 except for the numbers 2 and 9.
Page 19